-
-
Notifications
You must be signed in to change notification settings - Fork 804
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat[ux]: compile .vyi
files
#4290
base: master
Are you sure you want to change the base?
feat[ux]: compile .vyi
files
#4290
Conversation
.vyi
files
looking good to me. @cyberthirst can you take a look? |
bit unrelated, but if an interface
|
|
Not intended. May be the order in which we merged flag and |
shouldn't import ITest2
implements: ITest2
def bar() -> uint256:
...
def foo() -> uint8:
...
def foobar() -> uint8:
... outputs: # Functions
@external
def bar() -> uint256:
...
@external
def foo() -> uint8:
...
@external
def foobar() -> uint8:
...
ie |
also, if |
""" | ||
file = make_file("interface.vyi", interface) | ||
compile_files([file], ["ast", "annotated_ast", "interface", "external_interface", "abi"]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
would it make sense to use this here? https://github.com/vyperlang/vyper/pull/4290/files#diff-d428d4c971c9f7166899f6f2d3da5e17ca4478d8d371d803e735d6ee36b39d30R49
so we don't have to maintain the list on 2 places
name discrepancy - Itest vs ITest |
this looks ok to me. @cyberthirst what did we decide about the |
i think for but it's not that important. if we can't reach consensus, we can always block the behavior. |
# test__interface.vyi
@external
def foo():
...
should crash on |
yeah this sounds reasonable, i was reporting rather for completness |
say we have flag Foo:
Blah
@external
def foo() -> Foo:
... then with # External Interfaces
interface Ifile:
def foo() -> flag Foo('Blah'): nonpayable which is not valid syntax, is that intentional? |
we can import stateful modules to the # ifile.vyi
import test
initializes: test
@external
def foo(a: test.Foo) -> test.Foo:
...
# test.vy
c: uint256
flag Foo:
Blah
@external
def foo() -> Foo:
return Foo.Blah works eg with |
i think we should fix this -- there was a similar issue with repr for interfaces and/or structs iirc |
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #4290 +/- ##
==========================================
- Coverage 91.31% 90.17% -1.14%
==========================================
Files 113 113
Lines 16065 16085 +20
Branches 2705 2711 +6
==========================================
- Hits 14670 14505 -165
- Misses 964 1109 +145
- Partials 431 471 +40 ☔ View full report in Codecov by Sentry. |
I’ve made the changes. This should be good for another review. |
unallowed_formats = [ | ||
"layout", | ||
"devdoc", | ||
"userdoc", | ||
"archive", | ||
"archive_b64", | ||
"integrity", | ||
"solc_json", | ||
"bb", | ||
"bb_runtime", | ||
"cfg", | ||
"cfg_runtime", | ||
"ir", | ||
"ir_runtime", | ||
"ir_dict", | ||
"ir_runtime_dict", | ||
"method_identifiers", | ||
"metadata", | ||
"asm", | ||
"source_map", | ||
"source_map_runtime", | ||
"bytecode", | ||
"bytecode_runtime", | ||
"blueprint_bytecode", | ||
"opcodes", | ||
"opcodes_runtime", | ||
] | ||
|
||
for f in unallowed_formats: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe
unallowed_formats = [ | |
"layout", | |
"devdoc", | |
"userdoc", | |
"archive", | |
"archive_b64", | |
"integrity", | |
"solc_json", | |
"bb", | |
"bb_runtime", | |
"cfg", | |
"cfg_runtime", | |
"ir", | |
"ir_runtime", | |
"ir_dict", | |
"ir_runtime_dict", | |
"method_identifiers", | |
"metadata", | |
"asm", | |
"source_map", | |
"source_map_runtime", | |
"bytecode", | |
"bytecode_runtime", | |
"blueprint_bytecode", | |
"opcodes", | |
"opcodes_runtime", | |
] | |
for f in unallowed_formats: | |
for f in OUTPUT_FORMATS: # imported from vyper.compiler | |
if f in INTERFACE_FORMATS: | |
continue | |
# with pytest.raises ... |
if len(interface.flags) > 0: | ||
out += "# Flags\n\n" | ||
for flag in interface.flags.values(): | ||
out += f"flag {flag.name}:\n" | ||
for flag_value in flag._flag_members: | ||
out += f" {flag_value}\n" | ||
out += "\n\n" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@cyberthirst for future reference, maybe this should have been oos? as it was not in the original scope and could be implemented in a follow up PR
return part[0].upper() + part[1:] | ||
return "" | ||
|
||
name = "".join([capitalize_part(x) for x in stem.split("_")]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe simpler:
name = "".join([capitalize_part(x) for x in stem.split("_")]) | |
name = stem.title().replace("_", "") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
some small comments
What I did
Allowed compiling ".vyi" files with
ast,annotated_ast,interface,external_interface,abi
flags.#4232
How I did it
How to verify it
Commit message
Commit message for the final, squashed PR. (Optional, but reviewers will appreciate it! Please see our commit message style guide for what we would ideally like to see in a commit message.)
Description for the changelog
Cute Animal Picture